package com.ruoyi.procurement.service;

import com.ruoyi.procurement.domain.ProcurementModel;
import com.ruoyi.procurement.domain.ProcurementOrder;
import com.ruoyi.product.domain.Product;
import com.ruoyi.product.domain.ProductModel;

import java.util.List;
import java.util.Map;

public interface ProcurementServer {
    /**
     * 查询采购入库订单
     *
     * @param procurementOrder 查询条件
     * @return 结果集
     */
    List<ProcurementOrder> selectProcurementList(ProcurementOrder procurementOrder);

    /**
     * 查询订单入库信息 已同意
     *
     * @param procurementOrder 查询条件
     * @return 结果
     */
    List<ProcurementOrder> selectProcurementLists(ProcurementOrder procurementOrder);

    /**
     * 插入 入库订单信息
     *
     * @param procurementOrder 入库订单信息
     * @return 结果
     */
    int insertProcurementOrder(ProcurementOrder procurementOrder);

    /**
     * 删除入库订单信息
     *
     * @param procurementWarehousingId 入库订单主键
     * @return 结果
     */
    void deleteProcurementModel(Long procurementWarehousingId);

    /**
     * 根据主键id查询单条数据
     *
     * @param procurementWarehousingId 入库订单主键
     * @return 结果
     */
    ProcurementOrder selectProcurementById(Long procurementWarehousingId);

    /**
     * 根据入库订单主键查询入库型号信息
     *
     * @param procurementWarehousingId 入库订单主键
     * @return 结果
     */
    List<ProcurementModel> selectProcurementModelById(Long procurementWarehousingId);

    /**
     * 查询入库订单信息
     *
     * @param procurementOrder 查询条件
     * @return 结果
     */
    ProcurementOrder selectProcurementBy(ProcurementOrder procurementOrder);

    /**
     * 修改入库订单信息
     *
     * @param procurementOrder 查询条件
     * @return 结果
     */
    int updateProcurementOrder(ProcurementOrder procurementOrder);

    /**
     * 用于统计数据计算库存
     *
     * @param procurementOrder 条件
     */
    void calculation(ProcurementOrder procurementOrder);

    /**
     * wx公众号 查询采购入库 的 审核
     *
     * @param procurementWarehousingId 查询条件
     * @return 结果
     */
    List<Product> selectProcurementByIds(Long procurementWarehousingId);

    /**
     * 插入 入库订单信息 PDA
     *
     * @param procurementOrder 入库订单信息
     * @return 结果
     */
    int insertProcurementOrderPDA(ProcurementOrder procurementOrder);

    /**
     * 查询入库产品的详情
     *
     * @param product 查询条件
     * @return 结果
     */
    //    TableDataInfo selectProductLists(Product product);
    List<ProductModel> selectProductLists(Product product);


    List<Integer> selectProductType(String  productType);

    /**
     * 入库核验记录 查看信息 （增加退货数量）
     *
     * @return 结果
     */
    ProcurementOrder selectProcurementAndReturn(ProcurementOrder procurementOrders);

    /**
     * 通过订单编号查询
     *
     * @return结果
     */
    ProcurementOrder selectProcurementByMap(Map<String, Object> map);

    public int auditSale(ProcurementOrder procurementOrder);

    // 获取上一条记录
    Long querypreviousId(Long procurementWarehousingId);
    // 获取下一条记录
    Long queryNextId(Long procurementWarehousingId);

    List<Map<String, Object>> pendingReview(Long deptID);
}
